// 关于权限的自定义指令（自定义权限指令）
import store from '@/store'
export default {
    // 指令钩子
    inserted(el,binding){
        // “el”被用于指定指令作用到哪个元素上
        // 获取使用指令时传递的值
        const{value} = binding
        // 获取当前用户所拥有的所有按钮权限
        const buttonList = store.getters && store.getters.buttonList
        if (value) {
            // some()方法被用于检测数组中的元素是否满足指定条件（该条件由函数提供）。some()方法会依次执行数组的每个元素：如果有一个元素满足条件，则表达式返回true , 剩余的元素不会再执行检测（即“some”遇到“return true”时会结束对数组的遍历）；如果没有满足条件的元素，则返回false。
            const hasPermission = buttonList.some(button => {
                return button === value
            })
            // 如果没有权限，则将元素移除
            if (!hasPermission) {
                // parentNode 属性可返回某节点的父节点。如果指定的节点没有父节点则返回“null”。↓
                el.parentNode && el.parentNode.removeChild(el) // ←注：左边这行代码是模板代码，无需弄懂，只需要知道这样写即可把对应的按钮移除
            }
        } else {
            throw new Error(`需要指定权限标识！（例如v-permission="'article:delete'"）`)
        }
    }
}